
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

from BlogSystemAutoTest.Common.Utils import BlogDriver, generate_username  # 导入公共包里的Utils文件里定义的一个Driver对象

#定义一个清除输入框方法
def Clear(driver):
    driver.find_element(By.ID, "fetname").clear()
    driver.find_element(By.ID, "fetpwd").clear()


#定义一个点击弹窗方法
def Alert(driver):
    alert = WebDriverWait(driver, 2).until(EC.alert_is_present())
    alert.accept()
#创建一个登陆/注册的类对象
class BlogLogin:
    url=""  #用来保存登陆链接的变量
    driver="" # 用来保存浏览器句柄的变量

    #BlogLogin类的初始化(构造函数)
    def __init__(self):
        self.url="http://47.99.68.28:8888/"
        self.driver=BlogDriver.driver
#对正常登陆/注册进行测试
    #定义一个正常登陆的函数
    def NormalLogin(self):
        #第一步打开浏览器输入URL链接
        self.driver.get(self.url)
        #第二步找到用户名输入框输入正确用户名

        self.driver.find_element(By.ID, "fetname").send_keys("张飞")
        #第二步找到密码输入框输入正确密码
        self.driver.find_element(By.ID, "fetpwd").send_keys("123456")
        #第三步找到登陆按钮点击登陆
        self.driver.find_element(By.ID, "fetsubmit1").click()
        #第四步验证是否登陆成功(登陆成功能看到博客列表)
        self.driver.find_element(By.CSS_SELECTOR,'#bloglist > div:nth-child(1)')


#对异常登陆/注册进行测试
    def AbnormalLogin(self):
        # 验证登陆错误用户名
        self.driver.find_element(By.ID, "fetname").send_keys("qqqq")
        self.driver.find_element(By.ID, "fetpwd").send_keys("123456")
        self.driver.find_element(By.ID, "fetsubmit1").click()

        Alert(self.driver)

        # 验证登陆正确密码/错误用户名
        Clear(self.driver)
        self.driver.find_element(By.ID, "fetpwd").send_keys("123456")
        self.driver.find_element(By.ID, "fetsubmit1").click()
        Alert(self.driver)

        #验证注册错误用户名错误密码
        Clear(self.driver)
        self.driver.find_element(By.ID, "fetname").send_keys("张飞")
        self.driver.find_element(By.ID, "fetpwd").send_keys("123456")
        self.driver.find_element(By.ID, "fetsubmit2").click()

        Alert(self.driver)

